package com.xuxu.config;

import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 通配符模式
 */

@Configuration  //声明这个类是一个配置类
public class RabbitMQConfig {

    //定义交换机名称
    public static final String TOPIC_EXCHANGE= "topic_exchange_xuxu";
    //定义队列名称
    public static final String TOPIC_QUEUE = "topic_queue_xuxu";

    //声明交换机
    @Bean("topicExchange")
    public Exchange topicExchange(){
        /*
            topicExchange()：参数写交换机名称,这个方法是声明这个交换机是 通配符模式
            durable()：是否持久化保存交换机
            build()：创建一个交换机
         */
        return ExchangeBuilder.topicExchange(TOPIC_EXCHANGE).durable(true).build();
    }

    //声明队列
    @Bean("topicQueue")
    public Queue topicQueue(){
        // durable()参数是 交换机名称
        return QueueBuilder.durable(TOPIC_QUEUE).build();
    }

    //队列绑定交换机
    @Bean
    public Binding topicQueueExchange(@Qualifier("topicQueue") Queue queue,@Qualifier("topicExchange") Exchange exchange){
        /*
            bind(): 队列对象
            to():  交换机对象
            with(): 路由key(routingKey)
            noargs():没有其他参数
         */
        return BindingBuilder.bind(queue).to(exchange).with("topic.#").noargs();
    }



}
